package cn.itcast.bos.test.consume;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;
/**
 * 消息队列消费者
 * @author ME
 *
 */
public class ActiveMQConsumer {

	@Test
	public void consumeMQ() throws JMSException{
		// 连接工厂
		// 使用默认用户名、密码、路径
		// 路径 tcp://host:61616
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
		// 获取一个连接
		Connection connection = connectionFactory.createConnection();
		//开启连接
		connection.start();
		// 建立会话
		/** 第一个参数，是否使用事务
			如果设置true，操作消息队列后，必须使用 session.commit();
			如果设置false，操作消息队列后，不使用session.commit();
		*/
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 创建队列或者话题对象
		Queue queue = session.createQueue("helloworld");
		//创建消费者
		MessageConsumer messageConsumer = session.createConsumer(queue);
		
		
		while(true){
			//失效时间，如果10秒内没有收到新的消息，说明没有消息存在，此时可以退出当前循环
			TextMessage receive =(TextMessage) messageConsumer.receive(10000);
			if(receive != null){
				System.out.println(receive.getText());
			}else{
				break;
			}
			
		}
		
		
	}
	
}
